// #include <iostream>
// #include <string>
//
// using namespace std;
//
// /***
//  *
//  *c++ 继承
//  *单继承
//  *
//  *多继承
//  *
//  *虚继承
//  *
//  *掌握内容
//  *1. 继承写法
//  *  子类和派生没有区别
//  *  父类正常写 子类的写法 class 子类:继承方式 父类{};
//  *  三种继承方式
//  *  public 公有继承
//  *  protected 保护继承
//  *  private 私有继承
//  *  继承方式用来限定父类属性在子类中呈现
//  *
//  *  构造函数的写法 子类必须要调用父类的构造函数：初始化参数列表
//  *  如果子类想要构造无参对象 父类必须存在无参调用形态
//  *2. 继承中权限问题
//  *3. 继承中实质
//  *      继承的实质是父类的属性和行为在类中存在一份
//  *
//  **/
// // class parent
// // {
// // public:
// //     parent(string name="abc",int age=1):name(name),age(age)
// //     {
// //
// //     }
// // protected:
// //     string name;
// // private:
// //     int age; //父类中的私有属性无论什么继承方式子类都不能访问
// // };
// //
// // //公有继承
// // class Son: public parent
// // {
// // public:
// //     void print()
// //     {
// //         cout << name << endl;
// //     }
// // protected:
// // private:
// // };
// //
// // //保护继承 父类的公有属性在子类中最低也是保护属性
// // class Girl: protected parent
// // {
// // public:
// //     void print()
// //     {
// //         cout << name << endl;
// //     }
// // protected:
// //
// // private:
// // };
// // //私有继承 父类的所有属性在子类中最低也是私有属性
// // class Pri: private parent
// // {
// // public:
// //     void print()
// //     {
// //         cout << name << endl;
// //     }
// // protected:
// // private:
// // };
//
// class P
// {
// public:
//     P()
//     {
//         cout <<"p" << endl;
//     }
//     P(string name,int age):name(name),age(age)
//     {
//
//     }
// protected:
//     string name;
//     int age;
// };
//
// class S :public P
// {
// public:
//     S()
//     {
//         cout << "s" << endl;
//     }
//     S(string name,int age):P(name,age)
//     {
//         this->num = age;
//
//     }
// protected:
//     int num;
//
// };
//
// void test_two()
// {
//
// }
//
// void test_one()
// {
//     S s;
// }
//
//
//
//
//
//
//
// int main()
// {
//     // Son son;
//     // son.print();
//     //
//     // Girl girl;
//
//     test_one();
//
//     return 0;
// }